package message

const (
	LoginMesType            = "LoginMes"
	LoginResMesType         = "LoginResMes"
	RegisterMesType         = "RegisterMes"
	RegisterResMesType      = "RegisterResMes"
	NotifyUserStatusMesType = "NotifyUserStatusMes"
	SmsMesType              = "SmsMes"
	SmsResMesType           = "SmsResMes"
	PrivateMesType          = "PrivateMes"
	PrivateResMesType       = "PrivateResMes"
)

//这里我们定义几个用户状态常量
const (
	UserOnline = iota
	UserOffline
	UserBusyStatus
)

type Message struct {
	Type string `json:"type"` //消息类型
	Data string `json:"data"` //消息内容
}

//定义两个消息，需要再增加

//登录消息
type LoginMes struct {
	UserId   int    `json:"userId"`   //用户id
	UserPwd  string `json:"userPwd"`  //用户密码
	UserName string `json:"userName"` //用户名
}

//登录验证返回消息
type LoginResMes struct {
	Code    int    `json:"code"`    //返回码 500 表示未注册， 200 表示登录成功
	UsersId []int  `json:"userIds"` //增加字段，保存用户 id 的切片
	Error   string `json:"error"`   //返回错误信息，没有就为 nil
}

//注册
type RegisterMes struct {
	User User `json:"user"` //类型是User类型
}

//返回注册信息结果给客户端
type RegisterResMes struct {
	Code  int    `json:"code"`  //返回码 400 表示该用户已经占用， 200 表示注册成功
	Error string `json:"error"` //返回错误信息，没有就为 nil
}

//为了配合服务器端推送用户状态变化信息
type NotifyUserStatusMes struct {
	UserId int `json:"userId"` //用户id
	Status int `json:"status"` //用户状态
}

//增加一个SmsMes //发送的消息
type SmsMes struct {
	Content string `json:"content"`
	User           //匿名结构体，继承
}

//增加一个SmsResMes //发送的消息
type SmsResMes struct {
	Content string `json:"content"`
	User           //匿名结构体，继承
}

//创建一个类型，用来私聊，
//客户端请求类型
type PrivateMes struct {
	ReceiveId int    `json:"receiveId"` //需要发送的对象
	User             //存放发送者属性信息
	Content   string `json:"content"` //发送内容
}

//创建一个类型，用来私聊，
//服务端返回类型
type PrivateResMes struct {
	User           //存放发送者属性信息
	Content string `json:"content"` //发送内容
}

//创建结构用来保存离线消息
type OfflineMes struct {
	ReceiveId int    `json:"receiveId"` //需要发送的对象
	User             //存放发送者属性信息
	Content   string `json:"content"` //发送内容
}
